package collection02;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 集合的通用迭代(遍历)方式:
 *  Iterator iterator()
 *          从集合中获取一个迭代器对象,这个迭代器专门用来遍历集合中的元素
 *
 *  Iterator接口中的方法:
 *    boolean hasNext()
 *       判断集合中是否有遍历的元素,如果有,hasNext()就返回true,如果集合中没有要遍历的元素就返回false
 *    Object next()
 *       取出当前遍历的元素,并返回该元素
 *

 */
public class CollectionDemo01 {
    public static void main(String[] args) {
        //method01();
        //method02();

        Collection c = new ArrayList();
        c.add("李雷");
        c.add("韩梅梅");
        c.add("李宁");

        for (Iterator iterator = c.iterator();iterator.hasNext(); ) {
            System.out.println(iterator.next());
        }

    }

    private static void method02() {
        Collection c = new ArrayList();
        c.add("李雷");
        c.add("韩梅梅");
        c.add("李宁");

        Iterator iterator = c.iterator();

        /*
        while (判断当前遍历元素是否存在) {
             取出集合中的元素
        }
         */
        while (iterator.hasNext()) {//如果hasNext()返回true,代表当前有待遍历的元素,如果返回false,没有要遍历的元素
            System.out.println(iterator.next());
        }
    }

    private static void method01() {
        Collection c = new ArrayList();
        c.add("李雷");
        c.add("韩梅梅");
        c.add("李宁");

        //1.获取一个迭代器对象
        Iterator iterator = c.iterator();//这个方法底层肯定是返回Iterator接口的实现类对象(多态)

        //2.调用hasNext()方法和next()方法
        System.out.println(iterator.hasNext());//true
        //集合中有待遍历的元素:"李雷",因此hasNext()返回true
        System.out.println(iterator.next());//"李雷"
        //取出当前的遍历的元素:"李雷"

        System.out.println("-------------------");

        System.out.println(iterator.hasNext());//true
        //集合中有待遍历的元素:"韩梅梅",因此hasNext()返回true
        System.out.println(iterator.next());//"韩梅梅"
        //取出当前的遍历的元素:"韩梅梅"

        System.out.println("-------------------");

        System.out.println(iterator.hasNext());//true
        //集合中有待遍历的元素:"李宁",因此hasNext()返回true
        System.out.println(iterator.next());//"李宁"
        //取出当前的遍历的元素:"李宁"

        System.out.println("-------------------");

        System.out.println(iterator.hasNext());//false
        //此时集合中已经没有待遍历的元素,所以hasNext()返回false
        //System.out.println(iterator.next());// java.util.NoSuchElementException 当前无元素异常
    }
}
